﻿<?xml version="1.0" encoding="utf-8"?>
<xsd:schema id="EditorConfigurationSchema" targetNamespace="http://schemas.microsoft.com/dsltools/EditorConfiguration" elementFormDefault="qualified" xmlns="http://schemas.microsoft.com/dsltools/EditorConfiguration" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <!-- DslDomain -->
  <xsd:element name="dslDomain" type="DslDomain" />
  <xsd:complexType name="DslDomain">
    <xsd:annotation>
      <xsd:documentation>The domain of the DSL</xsd:documentation>
    </xsd:annotation>
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Relationship: DslDomainHasDslEditors -->
      <xsd:element name="dslEditors" minOccurs="0" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>Instances of DslDomainHasDslEditors</xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
          <xsd:sequence>
            <xsd:choice minOccurs="0" maxOccurs="unbounded" >
              <xsd:element ref="dslDomainHasDslEditors">
                <xsd:annotation>
                  <xsd:documentation>[Relationship deriving from DslDomainHasDslEditors needs to be serialized in full-form]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
              <xsd:element ref="dslEditor" >
                <xsd:annotation>
                  <xsd:documentation>[Target role-player]</xsd:documentation>
                </xsd:annotation>
              </xsd:element>
            </xsd:choice>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:sequence>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- dslVersion -->
    <xsd:attribute name="dslVersion" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Version of the model serialized in this file.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: ToolWindowBitmapsFile -->
    <xsd:attribute name="toolWindowBitmapsFile" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>The location to the bitmap (*.bmp) file containing the bitmaps for the toolwindow</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: ToolWindowTitle -->
    <xsd:attribute name="toolWindowTitle" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>The title for the toolwindow. The placeholder &apos;{DslName}&apos; (if present) will be automatically replaced at runtime with the name of the DSL language.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: NavigationStyle -->
    <xsd:attribute name="navigationStyle" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>The style of navigation controls</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: HostingStyle -->
    <xsd:attribute name="hostingStyle" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Where to host the DSL editors. Note. if this value is &apos;Designer&apos;, then you must have configured a CustomEditor in your DSL for this to work.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- DslDomain Moniker -->
  <xsd:element name="dslDomainMoniker" type="DslDomainMoniker" />
  <xsd:complexType name="DslDomainMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for DslDomain instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- DslEditor -->
  <xsd:element name="dslEditor" type="DslEditor" />
  <xsd:complexType name="DslEditor">
    <xsd:annotation>
      <xsd:documentation>An editor for the DSL</xsd:documentation>
    </xsd:annotation>
    <!-- Id -->
    <xsd:attribute name="Id" type="xsd:string">
      <xsd:annotation>
        <xsd:documentation>Instance Guid of this element, needed because SerializeId is set to true.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Caption -->
    <xsd:attribute name="caption" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>The caption for the editor</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: EditorControl -->
    <xsd:attribute name="editorControl" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>The type of the custom control to host in the editor</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Icon -->
    <xsd:attribute name="icon" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>The location to the bitmap (*.bmp) file containing the bitmap to represent the editor</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
    <!-- Property: Active -->
    <xsd:attribute name="active" type="xsd:boolean" >
      <xsd:annotation>
        <xsd:documentation>Whether this editor is currently active in the configuration</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- DslEditor Moniker -->
  <xsd:element name="dslEditorMoniker" type="DslEditorMoniker" />
  <xsd:complexType name="DslEditorMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for DslEditor instance.</xsd:documentation>
    </xsd:annotation>
    <xsd:attribute name="Id" type="xsd:string" >
      <xsd:annotation>
        <xsd:documentation>Attribute to store the moniker string.</xsd:documentation>
      </xsd:annotation>
    </xsd:attribute>
  </xsd:complexType>
  
  <!-- DslDomainHasDslEditors -->
  <xsd:element name="dslDomainHasDslEditors" abstract="true" type="DslDomainHasDslEditors" />
  <xsd:complexType name="DslDomainHasDslEditors" abstract="true" >
    <xsd:sequence minOccurs="0" maxOccurs="1">
      <!-- Target end DslEditor -->
      <xsd:element ref="dslEditor" minOccurs="1" maxOccurs="1">
        <xsd:annotation>
          <xsd:documentation>[Target role-player]</xsd:documentation>
        </xsd:annotation>
      </xsd:element>
    </xsd:sequence>
  </xsd:complexType>
  
  <!-- DslDomainHasDslEditors Moniker -->
  <xsd:element name="dslDomainHasDslEditorsMoniker" abstract="true" type="DslDomainHasDslEditorsMoniker" />
  <xsd:complexType name="DslDomainHasDslEditorsMoniker">
    <xsd:annotation>
      <xsd:documentation>Moniker for DslDomainHasDslEditors instance.</xsd:documentation>
    </xsd:annotation>
  </xsd:complexType>
  
</xsd:schema>

